package info.motteke.mixivoice4j.body;

/**
 * 本文を再構築するためのクラスです。
 * 本文の各要素を処理するためのインターフェースを定義します。
 *
 * @author Y.Wakamatsu
 *
 * @param <T> 再構築後の本文の型
 */
public interface BodyVisitor<T> {

    /**
     * {@linkplain StringElement}を処理します。
     *
     * @param stringElement 処理する要素
     */
    public void visit(StringElement stringElement);

    /**
     * {@linkplain LinkElement}を処理します。
     *
     * @param linkElement 処理する要素
     */
    public void visit(LinkElement linkElement);

    /**
     * {@linkplain iconElement}を処理します。
     *
     * @param iconElement 処理する要素
     */
    public void visit(IconElement iconElement);

    /**
     * 再構築された本文を返します。
     *
     */
    public T getValue();
}
